# -*- coding: utf-8 -*-
# @Time : 2022-01-06 10:10
# @Author : Z
# @Function : 反射调用函数
import traceback


class Reflect:

    def A(self):
        print('1')

    def B(self, a, b):
        print(a + b)

    def C(self, c=1, d=2):
        print(c + d)


# 实例化一个类对象
ref = Reflect()
input_func = input('请输入函数：')
try:
    if input_func:
        # 从对象里面找到这个方法或者函数，并赋值给变量
        func = getattr(ref, input_func)
        input_params = input('请输入参数：')
        try:
            # 将参数传给函数
            if input_params:
                # 通过逗号分隔，返回一个列表
                input_params = input_params.split(',')
                # print(input_params)
                print(*input_params)
                # 列表传参
                func(*input_params)
            else:
                func()
        except Exception as e:
            print('参数错误:%s' % input_params)
            print(str(traceback.format_exc()))
except Exception as e:
    print(input_func + ':函数不存在')
    print(str(traceback.format_exc()))

# if __name__ == '__main__':
#     # 实例化一个对象
#     a = Reflect
#     # 在对象里面找到方法B
#     func = getattr(a, "B")
#     # 传参
#     func("B", 2, 3)
#     func(a, 2, 3)
